RocketMQ Streams コアコンセプト
ドメインモデル
StreamBuilder
- StreamBuilder のインスタンスは 1 つから N 個のパイプラインを持ち、パイプラインはデータ処理パスを表します。
- パイプラインには、GroupNode と呼ばれる 1 つから N 個の処理ノードを含めることができます。
- StreamBuilder のインスタンスには、データプロセッサを構築できる TopologyBuilder もあります。
- 各 JobId は StreamBuilder の 1 つのインスタンスに対応します。
RocketMQStream
- RocketMQStream のインスタンスは、トポロジーを構築するための TopologyBuilder を持っています。
- RocketMQStream のインスタンスは、1 つから N 個のワーカースレッドをインスタンス化できます。
- WorkerThread インスタンスで表される各スレッドには、エンジンが含まれています。
- エンジンには、データ処理を実行するためのすべてのロジックが含まれており、コンシューマーインスタンス、プロデューサーインスタンス、および StateStore インスタンスが含まれています。
ストリーム処理インスタンス
ストリーム処理インスタンスは、RocketMQ Streams を実行しているプロセスを表します。
- ストリーム処理のインスタンスには、1 つの StreamBuilder、1 つの RocketMQStream、1 つのトポロジー、および 1 つ以上のパイプラインが含まれています。
StreamBuilder
StreamBuilder(jobId)
インスタンスを構築します。<OUT> RStream<OUT> source(topicName, deserializer)
ソース トピックとデシリアライズ方法を定義します。
RStream
<K> GroupedStream<K, T> keyBy(selectAction)
特定のフィールドでデータをグループ化します。<O> RStream<O> map(mapperAction)
データを 1 対 1 で変換します。RStream<T> filter(predictor)
データをフィルタリングします。<VR> RStream<T> flatMap(mapper)
データを 1 対多で変換します。<T2> JoinedStream<T, T2> join(rightStream)
2 つのストリームの結合を実行します。sink(topicName, serializer)
結果を特定のトピックに出力します。
GroupedStream
同じキーを持つデータに対する操作
<OUT> GroupedStream<K, Integer> count(selectAction)
特定のフィールドを含むデータエントリの数をカウントします。GroupedStream<K, V> min(selectAction)
特定のフィールドの最小値を計算します。GroupedStream<K, V> max(selectAction)
特定のフィールドの最大値を計算します。GroupedStream<K, ? extends Number> sum(selectAction)
特定のフィールドの合計を計算します。GroupedStream<K, V> filter(predictor)
特定のフィールドをフィルタリングします。<OUT> GroupedStream<K, OUT> map(valueMapperAction)
1 対 1 のデータ変換を実行します。<OUT> GroupedStream<K, OUT> aggregate(accumulator)
データに対して集計操作を実行し、ウィンドウがトリガーされる前にデータを追加し、ウィンドウがトリガーされたときに結果を計算するなど、2 次集計をサポートします。WindowStream<K, V> window(windowInfo)
ストリームのウィンドウを定義します。GroupedStream<K, V> addGraphNode(name, supplier)
低レベルインターフェースでカスタムオペレーターをストリーム処理トポロジーに追加します。RStream<V> toRStream()
RStream に変換します。インターフェースの観点でのみ変換し、データには影響しません。sink(topicName, serializer)
結果をカスタムシリアライズ形式でトピックに書き込みます。
WindowStream
ウィンドウに分割されたデータに対する操作
WindowStream<K, Integer> count()
ウィンドウ内のデータエントリの数をカウントします。WindowStream<K, V> filter(predictor)
ウィンドウ内のデータをフィルタリングします。<OUT> WindowStream<K, OUT> map(mapperAction)
ウィンドウ内のデータに対して 1 対 1 のデータ変換を実行します。<OUT> WindowStream<K, OUT> aggregate(aggregateAction)
ウィンドウ内のデータに対して多対 1 のデータ変換を実行します。<OUT> WindowStream<K, OUT> aggregate(accumulator)
ウィンドウ内のデータに対して集計操作を実行し、ウィンドウがトリガーされる前にデータを追加し、ウィンドウがトリガーされたときに結果を計算するなど、2 次集計をサポートします。void sink(topicName, serializer)
結果をカスタムシリアライズ形式でトピックに書き込みます。